<!DOCTYPE html><html><head>
      <title>README</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css">
      
      
      
      
      
      
      
      
      
      <style>
      /**
 * prism.js Github theme based on GitHub's theme.
 * @author Sam Clarke
 */
code[class*="language-"],
pre[class*="language-"] {
  color: #333;
  background: none;
  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.4;

  -moz-tab-size: 8;
  -o-tab-size: 8;
  tab-size: 8;

  -webkit-hyphens: none;
  -moz-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
}

/* Code blocks */
pre[class*="language-"] {
  padding: .8em;
  overflow: auto;
  /* border: 1px solid #ddd; */
  border-radius: 3px;
  /* background: #fff; */
  background: #f5f5f5;
}

/* Inline code */
:not(pre) > code[class*="language-"] {
  padding: .1em;
  border-radius: .3em;
  white-space: normal;
  background: #f5f5f5;
}

.token.comment,
.token.blockquote {
  color: #969896;
}

.token.cdata {
  color: #183691;
}

.token.doctype,
.token.punctuation,
.token.variable,
.token.macro.property {
  color: #333;
}

.token.operator,
.token.important,
.token.keyword,
.token.rule,
.token.builtin {
  color: #a71d5d;
}

.token.string,
.token.url,
.token.regex,
.token.attr-value {
  color: #183691;
}

.token.property,
.token.number,
.token.boolean,
.token.entity,
.token.atrule,
.token.constant,
.token.symbol,
.token.command,
.token.code {
  color: #0086b3;
}

.token.tag,
.token.selector,
.token.prolog {
  color: #63a35c;
}

.token.function,
.token.namespace,
.token.pseudo-element,
.token.class,
.token.class-name,
.token.pseudo-class,
.token.id,
.token.url-reference .token.variable,
.token.attr-name {
  color: #795da3;
}

.token.entity {
  cursor: help;
}

.token.title,
.token.title .token.punctuation {
  font-weight: bold;
  color: #1d3e81;
}

.token.list {
  color: #ed6a43;
}

.token.inserted {
  background-color: #eaffea;
  color: #55a532;
}

.token.deleted {
  background-color: #ffecec;
  color: #bd2c00;
}

.token.bold {
  font-weight: bold;
}

.token.italic {
  font-style: italic;
}


/* JSON */
.language-json .token.property {
  color: #183691;
}

.language-markup .token.tag .token.punctuation {
  color: #333;
}

/* CSS */
code.language-css,
.language-css .token.function {
  color: #0086b3;
}

/* YAML */
.language-yaml .token.atrule {
  color: #63a35c;
}

code.language-yaml {
  color: #183691;
}

/* Ruby */
.language-ruby .token.function {
  color: #333;
}

/* Markdown */
.language-markdown .token.url {
  color: #795da3;
}

/* Makefile */
.language-makefile .token.symbol {
  color: #795da3;
}

.language-makefile .token.variable {
  color: #183691;
}

.language-makefile .token.builtin {
  color: #0086b3;
}

/* Bash */
.language-bash .token.keyword {
  color: #0086b3;
}

/* highlight */
pre[data-line] {
  position: relative;
  padding: 1em 0 1em 3em;
}
pre[data-line] .line-highlight-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  background-color: transparent;
  display: block;
  width: 100%;
}

pre[data-line] .line-highlight {
  position: absolute;
  left: 0;
  right: 0;
  padding: inherit 0;
  margin-top: 1em;
  background: hsla(24, 20%, 50%,.08);
  background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
  pointer-events: none;
  line-height: inherit;
  white-space: pre;
}

pre[data-line] .line-highlight:before, 
pre[data-line] .line-highlight[data-end]:after {
  content: attr(data-start);
  position: absolute;
  top: .4em;
  left: .6em;
  min-width: 1em;
  padding: 0 .5em;
  background-color: hsla(24, 20%, 50%,.4);
  color: hsl(24, 20%, 95%);
  font: bold 65%/1.5 sans-serif;
  text-align: center;
  vertical-align: .3em;
  border-radius: 999px;
  text-shadow: none;
  box-shadow: 0 1px white;
}

pre[data-line] .line-highlight[data-end]:after {
  content: attr(data-end);
  top: auto;
  bottom: .4em;
}html body{font-family:"Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif;font-size:16px;line-height:1.6;color:#333;background-color:#fff;overflow:initial;box-sizing:border-box;word-wrap:break-word}html body>:first-child{margin-top:0}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{line-height:1.2;margin-top:1em;margin-bottom:16px;color:#000}html body h1{font-size:2.25em;font-weight:300;padding-bottom:.3em}html body h2{font-size:1.75em;font-weight:400;padding-bottom:.3em}html body h3{font-size:1.5em;font-weight:500}html body h4{font-size:1.25em;font-weight:600}html body h5{font-size:1.1em;font-weight:600}html body h6{font-size:1em;font-weight:600}html body h1,html body h2,html body h3,html body h4,html body h5{font-weight:600}html body h5{font-size:1em}html body h6{color:#5c5c5c}html body strong{color:#000}html body del{color:#5c5c5c}html body a:not([href]){color:inherit;text-decoration:none}html body a{color:#08c;text-decoration:none}html body a:hover{color:#00a3f5;text-decoration:none}html body img{max-width:100%}html body>p{margin-top:0;margin-bottom:16px;word-wrap:break-word}html body>ul,html body>ol{margin-bottom:16px}html body ul,html body ol{padding-left:2em}html body ul.no-list,html body ol.no-list{padding:0;list-style-type:none}html body ul ul,html body ul ol,html body ol ol,html body ol ul{margin-top:0;margin-bottom:0}html body li{margin-bottom:0}html body li.task-list-item{list-style:none}html body li>p{margin-top:0;margin-bottom:0}html body .task-list-item-checkbox{margin:0 .2em .25em -1.8em;vertical-align:middle}html body .task-list-item-checkbox:hover{cursor:pointer}html body blockquote{margin:16px 0;font-size:inherit;padding:0 15px;color:#5c5c5c;background-color:#f0f0f0;border-left:4px solid #d6d6d6}html body blockquote>:first-child{margin-top:0}html body blockquote>:last-child{margin-bottom:0}html body hr{height:4px;margin:32px 0;background-color:#d6d6d6;border:0 none}html body table{margin:10px 0 15px 0;border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}html body table th{font-weight:bold;color:#000}html body table td,html body table th{border:1px solid #d6d6d6;padding:6px 13px}html body dl{padding:0}html body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:bold}html body dl dd{padding:0 16px;margin-bottom:16px}html body code{font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-size:.85em !important;color:#000;background-color:#f0f0f0;border-radius:3px;padding:.2em 0}html body code::before,html body code::after{letter-spacing:-0.2em;content:"\00a0"}html body pre>code{padding:0;margin:0;font-size:.85em !important;word-break:normal;white-space:pre;background:transparent;border:0}html body .highlight{margin-bottom:16px}html body .highlight pre,html body pre{padding:1em;overflow:auto;font-size:.85em !important;line-height:1.45;border:#d6d6d6;border-radius:3px}html body .highlight pre{margin-bottom:0;word-break:normal}html body pre code,html body pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}html body pre code:before,html body pre tt:before,html body pre code:after,html body pre tt:after{content:normal}html body p,html body blockquote,html body ul,html body ol,html body dl,html body pre{margin-top:0;margin-bottom:16px}html body kbd{color:#000;border:1px solid #d6d6d6;border-bottom:2px solid #c7c7c7;padding:2px 4px;background-color:#f0f0f0;border-radius:3px}@media print{html body{background-color:#fff}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{color:#000;page-break-after:avoid}html body blockquote{color:#5c5c5c}html body pre{page-break-inside:avoid}html body table{display:table}html body img{display:block;max-width:100%;max-height:100%}html body pre,html body code{word-wrap:break-word;white-space:pre}}.markdown-preview{width:100%;height:100%;box-sizing:border-box}.markdown-preview .pagebreak,.markdown-preview .newpage{page-break-before:always}.markdown-preview pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}.markdown-preview pre.line-numbers>code{position:relative}.markdown-preview pre.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-preview pre.line-numbers .line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.markdown-preview pre.line-numbers .line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}.markdown-preview .mathjax-exps .MathJax_Display{text-align:center !important}.markdown-preview:not([for="preview"]) .code-chunk .btn-group{display:none}.markdown-preview:not([for="preview"]) .code-chunk .status{display:none}.markdown-preview:not([for="preview"]) .code-chunk .output-div{margin-bottom:16px}.scrollbar-style::-webkit-scrollbar{width:8px}.scrollbar-style::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}.scrollbar-style::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode]){position:relative;width:100%;height:100%;top:0;left:0;margin:0;padding:0;overflow:auto}html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{position:relative;top:0}@media screen and (min-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em calc(50% - 457px + 2em)}}@media screen and (max-width:914px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode]) .markdown-preview{font-size:14px !important;padding:1em}}@media print{html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{display:none}}html body[for="html-export"]:not([data-presentation-mode]) #sidebar-toc-btn{position:fixed;bottom:8px;left:8px;font-size:28px;cursor:pointer;color:inherit;z-index:99;width:32px;text-align:center;opacity:.4}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] #sidebar-toc-btn{opacity:1}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc{position:fixed;top:0;left:0;width:300px;height:100%;padding:32px 0 48px 0;font-size:14px;box-shadow:0 0 4px rgba(150,150,150,0.33);box-sizing:border-box;overflow:auto;background-color:inherit}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar{width:8px}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,0.66);border:4px solid rgba(150,150,150,0.66);background-clip:content-box}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc a{text-decoration:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{padding:0 1.6em;margin-top:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc li{margin-bottom:.8em}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc ul{list-style-type:none}html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{left:300px;width:calc(100% -  300px);padding:2em calc(50% - 457px -  150px);margin:0;box-sizing:border-box}@media screen and (max-width:1274px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for="html-export"]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{width:100%}}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .markdown-preview{left:50%;transform:translateX(-50%)}html body[for="html-export"]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .md-sidebar-toc{display:none}
/* Please visit the URL below for more information: */
/*   https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css */

      </style>
    </head>
    <body for="html-export">
      <div class="mume markdown-preview  ">
      <p>skinparam backgroundColor #EEEBDC</p>
<p><!--?xml version="1.0" encoding="UTF-8" standalone="no"?--><svg xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" contentscripttype="application/ecmascript" contentstyletype="text/css" height="530px" preserveAspectRatio="none" style="width:680px;height:530px;background:#FFFFFF;" version="1.1" viewBox="0 0 680 530" width="680px" zoomAndPan="magnify"><defs><filter height="300%" id="f10r7t7pl4a7wj" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[81bb3a61d0c1aadda1d01ff9a535ed8e]
cluster Communication Module--><polygon fill="#FFFFFF" filter="url(#f10r7t7pl4a7wj)" points="16,126,205,126,212,148.2969,663,148.2969,663,523,16,523,16,126" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="16" x2="212" y1="148.2969" y2="148.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="183" x="20" y="140.9951">Communication Module</text><!--MD5=[e3e7870dce4cabc1ffff61eee98a0888]
cluster AUTOSAR Interface--><polygon fill="#FFFFFF" filter="url(#f10r7t7pl4a7wj)" points="380,272,537,272,544,294.2969,631,294.2969,631,515,380,515,380,272" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="380" x2="544" y1="294.2969" y2="294.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="151" x="384" y="286.9951">AUTOSAR Interface</text><!--MD5=[2ca1536628238a7dc78c5d90808014f9]
class Session--><rect codeline="9" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="86.4141" id="Session" style="stroke:#A80036;stroke-width:1.5;" width="136" x="24" y="153"/><ellipse cx="63.75" cy="169" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M66.7188,174.6406 Q66.1406,174.9375 65.5,175.0781 Q64.8594,175.2344 64.1563,175.2344 Q61.6563,175.2344 60.3281,173.5938 Q59.0156,171.9375 59.0156,168.8125 Q59.0156,165.6875 60.3281,164.0313 Q61.6563,162.375 64.1563,162.375 Q64.8594,162.375 65.5,162.5313 Q66.1563,162.6875 66.7188,162.9844 L66.7188,165.7031 Q66.0938,165.125 65.5,164.8594 Q64.9063,164.5781 64.2813,164.5781 Q62.9375,164.5781 62.25,165.6563 Q61.5625,166.7188 61.5625,168.8125 Q61.5625,170.9063 62.25,171.9844 Q62.9375,173.0469 64.2813,173.0469 Q64.9063,173.0469 65.5,172.7813 Q66.0938,172.5 66.7188,171.9219 L66.7188,174.6406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="49" x="83.25" y="173.1543">Session</text><line style="stroke:#A80036;stroke-width:1.5;" x1="25" x2="159" y1="185" y2="185"/><line style="stroke:#A80036;stroke-width:1.5;" x1="25" x2="159" y1="193" y2="193"/><ellipse cx="35" cy="204" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="85" x="44" y="207.2104">RecvInputMsg()</text><ellipse cx="35" cy="216.8047" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="110" x="44" y="220.0151">SendOutputSignal()</text><ellipse cx="35" cy="229.6094" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="56" x="44" y="232.8198">SendAck()</text><!--MD5=[e76aae3fb42e350194f1072607751ca6]
class OutputHandler--><rect codeline="15" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="60.8047" id="OutputHandler" style="stroke:#A80036;stroke-width:1.5;" width="136" x="195" y="165.5"/><ellipse cx="215.4" cy="181.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M218.3688,187.1406 Q217.7906,187.4375 217.15,187.5781 Q216.5094,187.7344 215.8063,187.7344 Q213.3063,187.7344 211.9781,186.0938 Q210.6656,184.4375 210.6656,181.3125 Q210.6656,178.1875 211.9781,176.5313 Q213.3063,174.875 215.8063,174.875 Q216.5094,174.875 217.15,175.0313 Q217.8063,175.1875 218.3688,175.4844 L218.3688,178.2031 Q217.7438,177.625 217.15,177.3594 Q216.5563,177.0781 215.9313,177.0781 Q214.5875,177.0781 213.9,178.1563 Q213.2125,179.2188 213.2125,181.3125 Q213.2125,183.4063 213.9,184.4844 Q214.5875,185.5469 215.9313,185.5469 Q216.5563,185.5469 217.15,185.2813 Q217.7438,185 218.3688,184.4219 L218.3688,187.1406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="92" x="230.6" y="185.6543">OutputHandler</text><line style="stroke:#A80036;stroke-width:1.5;" x1="196" x2="330" y1="197.5" y2="197.5"/><line style="stroke:#A80036;stroke-width:1.5;" x1="196" x2="330" y1="205.5" y2="205.5"/><ellipse cx="206" cy="216.5" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="110" x="215" y="219.7104">SendOutputSignal()</text><!--MD5=[840e61a8de1edd5c7a7c4404797c4ad2]
class InputHandler--><rect codeline="19" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="60.8047" id="InputHandler" style="stroke:#A80036;stroke-width:1.5;" width="113" x="35.5" y="305.5"/><ellipse cx="50.5" cy="321.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M53.4688,327.1406 Q52.8906,327.4375 52.25,327.5781 Q51.6094,327.7344 50.9063,327.7344 Q48.4063,327.7344 47.0781,326.0938 Q45.7656,324.4375 45.7656,321.3125 Q45.7656,318.1875 47.0781,316.5313 Q48.4063,314.875 50.9063,314.875 Q51.6094,314.875 52.25,315.0313 Q52.9063,315.1875 53.4688,315.4844 L53.4688,318.2031 Q52.8438,317.625 52.25,317.3594 Q51.6563,317.0781 51.0313,317.0781 Q49.6875,317.0781 49,318.1563 Q48.3125,319.2188 48.3125,321.3125 Q48.3125,323.4063 49,324.4844 Q49.6875,325.5469 51.0313,325.5469 Q51.6563,325.5469 52.25,325.2813 Q52.8438,325 53.4688,324.4219 L53.4688,327.1406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="81" x="64.5" y="325.6543">InputHandler</text><line style="stroke:#A80036;stroke-width:1.5;" x1="36.5" x2="147.5" y1="337.5" y2="337.5"/><line style="stroke:#A80036;stroke-width:1.5;" x1="36.5" x2="147.5" y1="345.5" y2="345.5"/><ellipse cx="46.5" cy="356.5" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="85" x="55.5" y="359.7104">RecvInputMsg()</text><!--MD5=[c1407af2b3a5b9759f27097a79dd6f82]
class APPsProtocolHandler--><rect codeline="23" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="73.6094" id="APPsProtocolHandler" style="stroke:#A80036;stroke-width:1.5;" width="164" x="184" y="299"/><ellipse cx="199" cy="315" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M201.9688,320.6406 Q201.3906,320.9375 200.75,321.0781 Q200.1094,321.2344 199.4063,321.2344 Q196.9063,321.2344 195.5781,319.5938 Q194.2656,317.9375 194.2656,314.8125 Q194.2656,311.6875 195.5781,310.0313 Q196.9063,308.375 199.4063,308.375 Q200.1094,308.375 200.75,308.5313 Q201.4063,308.6875 201.9688,308.9844 L201.9688,311.7031 Q201.3438,311.125 200.75,310.8594 Q200.1563,310.5781 199.5313,310.5781 Q198.1875,310.5781 197.5,311.6563 Q196.8125,312.7188 196.8125,314.8125 Q196.8125,316.9063 197.5,317.9844 Q198.1875,319.0469 199.5313,319.0469 Q200.1563,319.0469 200.75,318.7813 Q201.3438,318.5 201.9688,317.9219 L201.9688,320.6406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="132" x="213" y="319.1543">APPsProtocolHandler</text><line style="stroke:#A80036;stroke-width:1.5;" x1="185" x2="347" y1="331" y2="331"/><line style="stroke:#A80036;stroke-width:1.5;" x1="185" x2="347" y1="339" y2="339"/><ellipse cx="195" cy="350" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="108" x="204" y="353.2104">WrapSignalToMsg()</text><ellipse cx="195" cy="362.8047" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="134" x="204" y="366.0151">ExtractSignalFromMsg()</text><!--MD5=[d4e77dcb1eb31160be3fba0b6d1b5be4]
class IpcInterfaceOut--><rect codeline="28" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="60.8047" id="IpcInterfaceOut" style="stroke:#A80036;stroke-width:1.5;" width="128" x="366" y="165.5"/><ellipse cx="381" cy="181.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M383.9688,187.1406 Q383.3906,187.4375 382.75,187.5781 Q382.1094,187.7344 381.4063,187.7344 Q378.9063,187.7344 377.5781,186.0938 Q376.2656,184.4375 376.2656,181.3125 Q376.2656,178.1875 377.5781,176.5313 Q378.9063,174.875 381.4063,174.875 Q382.1094,174.875 382.75,175.0313 Q383.4063,175.1875 383.9688,175.4844 L383.9688,178.2031 Q383.3438,177.625 382.75,177.3594 Q382.1563,177.0781 381.5313,177.0781 Q380.1875,177.0781 379.5,178.1563 Q378.8125,179.2188 378.8125,181.3125 Q378.8125,183.4063 379.5,184.4844 Q380.1875,185.5469 381.5313,185.5469 Q382.1563,185.5469 382.75,185.2813 Q383.3438,185 383.9688,184.4219 L383.9688,187.1406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="96" x="395" y="185.6543">IpcInterfaceOut</text><line style="stroke:#A80036;stroke-width:1.5;" x1="367" x2="493" y1="197.5" y2="197.5"/><line style="stroke:#A80036;stroke-width:1.5;" x1="367" x2="493" y1="205.5" y2="205.5"/><ellipse cx="377" cy="216.5" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="69" x="386" y="219.7104">DoSendJob()</text><!--MD5=[1ca0622738c6190d3e79f07b0a31beb1]
class IpcInterfaceIn--><rect codeline="31" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="60.8047" id="IpcInterfaceIn" style="stroke:#A80036;stroke-width:1.5;" width="117" x="43.5" y="439.5"/><ellipse cx="58.5" cy="455.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M61.4688,461.1406 Q60.8906,461.4375 60.25,461.5781 Q59.6094,461.7344 58.9063,461.7344 Q56.4063,461.7344 55.0781,460.0938 Q53.7656,458.4375 53.7656,455.3125 Q53.7656,452.1875 55.0781,450.5313 Q56.4063,448.875 58.9063,448.875 Q59.6094,448.875 60.25,449.0313 Q60.9063,449.1875 61.4688,449.4844 L61.4688,452.2031 Q60.8438,451.625 60.25,451.3594 Q59.6563,451.0781 59.0313,451.0781 Q57.6875,451.0781 57,452.1563 Q56.3125,453.2188 56.3125,455.3125 Q56.3125,457.4063 57,458.4844 Q57.6875,459.5469 59.0313,459.5469 Q59.6563,459.5469 60.25,459.2813 Q60.8438,459 61.4688,458.4219 L61.4688,461.1406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="85" x="72.5" y="459.6543">IpcInterfaceIn</text><line style="stroke:#A80036;stroke-width:1.5;" x1="44.5" x2="159.5" y1="471.5" y2="471.5"/><line style="stroke:#A80036;stroke-width:1.5;" x1="44.5" x2="159.5" y1="479.5" y2="479.5"/><ellipse cx="54.5" cy="490.5" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="66" x="63.5" y="493.7104">DoRecvJob()</text><!--MD5=[90ebad81977aa11e2a67596e7921bab4]
class ZmqIpcImplOut--><rect codeline="35" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="60.8047" id="ZmqIpcImplOut" style="stroke:#A80036;stroke-width:1.5;" width="125" x="529.5" y="165.5"/><ellipse cx="544.5" cy="181.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M547.4688,187.1406 Q546.8906,187.4375 546.25,187.5781 Q545.6094,187.7344 544.9063,187.7344 Q542.4063,187.7344 541.0781,186.0938 Q539.7656,184.4375 539.7656,181.3125 Q539.7656,178.1875 541.0781,176.5313 Q542.4063,174.875 544.9063,174.875 Q545.6094,174.875 546.25,175.0313 Q546.9063,175.1875 547.4688,175.4844 L547.4688,178.2031 Q546.8438,177.625 546.25,177.3594 Q545.6563,177.0781 545.0313,177.0781 Q543.6875,177.0781 543,178.1563 Q542.3125,179.2188 542.3125,181.3125 Q542.3125,183.4063 543,184.4844 Q543.6875,185.5469 545.0313,185.5469 Q545.6563,185.5469 546.25,185.2813 Q546.8438,185 547.4688,184.4219 L547.4688,187.1406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="93" x="558.5" y="185.6543">ZmqIpcImplOut</text><line style="stroke:#A80036;stroke-width:1.5;" x1="530.5" x2="653.5" y1="197.5" y2="197.5"/><line style="stroke:#A80036;stroke-width:1.5;" x1="530.5" x2="653.5" y1="205.5" y2="205.5"/><ellipse cx="540.5" cy="216.5" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="69" x="549.5" y="219.7104">DoSendJob()</text><!--MD5=[25b6c576828d101c99c622fa327abdab]
class ZmqIpcImplIn--><rect codeline="38" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="60.8047" id="ZmqIpcImplIn" style="stroke:#A80036;stroke-width:1.5;" width="122" x="213" y="439.5"/><ellipse cx="231.6" cy="455.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M234.5688,461.1406 Q233.9906,461.4375 233.35,461.5781 Q232.7094,461.7344 232.0063,461.7344 Q229.5063,461.7344 228.1781,460.0938 Q226.8656,458.4375 226.8656,455.3125 Q226.8656,452.1875 228.1781,450.5313 Q229.5063,448.875 232.0063,448.875 Q232.7094,448.875 233.35,449.0313 Q234.0063,449.1875 234.5688,449.4844 L234.5688,452.2031 Q233.9438,451.625 233.35,451.3594 Q232.7563,451.0781 232.1313,451.0781 Q230.7875,451.0781 230.1,452.1563 Q229.4125,453.2188 229.4125,455.3125 Q229.4125,457.4063 230.1,458.4844 Q230.7875,459.5469 232.1313,459.5469 Q232.7563,459.5469 233.35,459.2813 Q233.9438,459 234.5688,458.4219 L234.5688,461.1406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="82" x="246.4" y="459.6543">ZmqIpcImplIn</text><line style="stroke:#A80036;stroke-width:1.5;" x1="214" x2="334" y1="471.5" y2="471.5"/><line style="stroke:#A80036;stroke-width:1.5;" x1="214" x2="334" y1="479.5" y2="479.5"/><ellipse cx="224" cy="490.5" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="96" x="233" y="493.7104">DoBlockRecvJob()</text><!--MD5=[363b13863ca5c059fad6ef53fd52bddf]
class In--><rect codeline="42" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="73.6094" id="In" style="stroke:#A80036;stroke-width:1.5;" width="108" x="388" y="433"/><ellipse cx="431.8" cy="449" fill="#B4A7E5" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M427.7219,444.7656 L427.7219,442.6094 L435.1125,442.6094 L435.1125,444.7656 L432.6438,444.7656 L432.6438,452.8438 L435.1125,452.8438 L435.1125,455 L427.7219,455 L427.7219,452.8438 L430.1906,452.8438 L430.1906,444.7656 L427.7219,444.7656 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="12" x="452.2" y="453.1543">In</text><line style="stroke:#A80036;stroke-width:1.5;" x1="389" x2="495" y1="465" y2="465"/><line style="stroke:#A80036;stroke-width:1.5;" x1="389" x2="495" y1="473" y2="473"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="96" x="394" y="487.2104">PowerModeMsg()</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="59" x="394" y="500.0151">TriggerIn()</text><!--MD5=[653ce350da8e1e1fedf2371259b466b4]
class Out--><rect codeline="46" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="73.6094" id="Out" style="stroke:#A80036;stroke-width:1.5;" width="136" x="487" y="299"/><ellipse cx="540.25" cy="315" fill="#B4A7E5" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M536.1719,310.7656 L536.1719,308.6094 L543.5625,308.6094 L543.5625,310.7656 L541.0938,310.7656 L541.0938,318.8438 L543.5625,318.8438 L543.5625,321 L536.1719,321 L536.1719,318.8438 L538.6406,318.8438 L538.6406,310.7656 L536.1719,310.7656 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="21" x="560.75" y="319.1543">Out</text><line style="stroke:#A80036;stroke-width:1.5;" x1="488" x2="622" y1="331" y2="331"/><line style="stroke:#A80036;stroke-width:1.5;" x1="488" x2="622" y1="339" y2="339"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="124" x="493" y="353.2104">PowerModeRespMsg()</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="69" x="493" y="366.0151">TriggerOut()</text><!--MD5=[8889967c2cd2ac4313b01ede141197d0]
class InOut--><rect codeline="50" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="60.8047" id="InOut" style="stroke:#A80036;stroke-width:1.5;" width="91" x="531.5" y="439.5"/><ellipse cx="558.2" cy="455.5" fill="#B4A7E5" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M554.1219,451.2656 L554.1219,449.1094 L561.5125,449.1094 L561.5125,451.2656 L559.0438,451.2656 L559.0438,459.3438 L561.5125,459.3438 L561.5125,461.5 L554.1219,461.5 L554.1219,459.3438 L556.5906,459.3438 L556.5906,451.2656 L554.1219,451.2656 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="33" x="574.8" y="459.6543">InOut</text><line style="stroke:#A80036;stroke-width:1.5;" x1="532.5" x2="621.5" y1="471.5" y2="471.5"/><line style="stroke:#A80036;stroke-width:1.5;" x1="532.5" x2="621.5" y1="479.5" y2="479.5"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="79" x="537.5" y="493.7104">TriggerInOut()</text><!--MD5=[14c037cdb48cdfa8e9d3cfcaca3730a9]
class SysContext--><rect codeline="2" fill="#FEFECE" filter="url(#f10r7t7pl4a7wj)" height="86.4141" id="SysContext" style="stroke:#A80036;stroke-width:1.5;" width="132" x="26" y="7"/><ellipse cx="54.95" cy="23" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M57.9188,28.6406 Q57.3406,28.9375 56.7,29.0781 Q56.0594,29.2344 55.3563,29.2344 Q52.8563,29.2344 51.5281,27.5938 Q50.2156,25.9375 50.2156,22.8125 Q50.2156,19.6875 51.5281,18.0313 Q52.8563,16.375 55.3563,16.375 Q56.0594,16.375 56.7,16.5313 Q57.3563,16.6875 57.9188,16.9844 L57.9188,19.7031 Q57.2938,19.125 56.7,18.8594 Q56.1063,18.5781 55.4813,18.5781 Q54.1375,18.5781 53.45,19.6563 Q52.7625,20.7188 52.7625,22.8125 Q52.7625,24.9063 53.45,25.9844 Q54.1375,27.0469 55.4813,27.0469 Q56.1063,27.0469 56.7,26.7813 Q57.2938,26.5 57.9188,25.9219 L57.9188,28.6406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="69" x="72.05" y="27.1543">SysContext</text><line style="stroke:#A80036;stroke-width:1.5;" x1="27" x2="157" y1="39" y2="39"/><rect fill="none" height="6" style="stroke:#C82930;stroke-width:1.0;" width="6" x="34" y="47"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="106" x="46" y="53.2104">input_msg_queue_</text><line style="stroke:#A80036;stroke-width:1.5;" x1="27" x2="157" y1="59.8047" y2="59.8047"/><ellipse cx="37" cy="70.8047" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="71" x="46" y="74.0151">STMWorker()</text><ellipse cx="37" cy="83.6094" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="82" x="46" y="86.8198">HandleSignal()</text><!--MD5=[921aa3181377305739a3b33b8c813d5b]
reverse link SysContext to Session--><path codeline="53" d="M92,106.0152 C92,106.0152 92,152.7878 92,152.7878 " fill="none" id="SysContext-backto-Session" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="92,93.0152,88,99.0152,92,105.0152,96,99.0152,92,93.0152" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[2a36b279b14fe058a6384f8fc117702d]
reverse link Session to OutputHandler--><path codeline="54" d="M173.0751,196 C173.0751,196 194.8798,196 194.8798,196 " fill="none" id="Session-backto-OutputHandler" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="160.0751,196,166.0751,200,172.0751,196,166.0751,192,160.0751,196" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[83cf88451e694474cb513c9d6db51c17]
reverse link Session to InputHandler--><path codeline="55" d="M92,252.147 C92,252.147 92,305.2101 92,305.2101 " fill="none" id="Session-backto-InputHandler" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="92,239.147,88,245.147,92,251.147,96,245.147,92,239.147" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[35a57399128d2dc762e8d85ff0c98ca7]
reverse link OutputHandler to IpcInterfaceOut--><path codeline="56" d="M344.4071,196 C344.4071,196 365.7339,196 365.7339,196 " fill="none" id="OutputHandler-backto-IpcInterfaceOut" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="331.4071,196,337.4071,200,343.4071,196,337.4071,192,331.4071,196" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[b1b9be5ff95d4884832ad1c8ca64ef5b]
reverse link IpcInterfaceOut to ZmqIpcImplOut--><path codeline="57" d="M514.0267,196 C514.0267,196 529.4969,196 529.4969,196 " fill="none" id="IpcInterfaceOut-backto-ZmqIpcImplOut" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="none" points="514.0267,202.9999,494.0267,196,514.0267,188.9999,514.0267,202.9999" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[e74dc94977d1c39df8b374a9ba6e46e8]
reverse link OutputHandler to APPsProtocolHandler--><path codeline="58" d="M263,239.7236 C263,239.7236 263,298.8788 263,298.8788 " fill="none" id="OutputHandler-backto-APPsProtocolHandler" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#FFFFFF" points="263,226.7236,259,232.7236,263,238.7236,267,232.7236,263,226.7236" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[5b01afbe7786b41a04a4ed88f95ae655]
reverse link InputHandler to APPsProtocolHandler--><path codeline="59" d="M161.9741,336 C161.9741,336 183.9638,336 183.9638,336 " fill="none" id="InputHandler-backto-APPsProtocolHandler" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#FFFFFF" points="148.9741,336,154.9741,340,160.9741,336,154.9741,332,148.9741,336" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[0b7e64420330ba2c2e5f6583c0f3b960]
reverse link InputHandler to IpcInterfaceIn--><path codeline="60" d="M96,379.7423 C96,379.7423 96,439.4007 96,439.4007 " fill="none" id="InputHandler-backto-IpcInterfaceIn" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="96,366.7423,92,372.7423,96,378.7423,100,372.7423,96,366.7423" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[b8337ca8853470a27e09d09b2184b193]
reverse link IpcInterfaceIn to ZmqIpcImplIn--><path codeline="61" d="M180.7116,470 C180.7116,470 212.9156,470 212.9156,470 " fill="none" id="IpcInterfaceIn-backto-ZmqIpcImplIn" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="none" points="180.7116,476.9999,160.7116,470,180.7115,462.9999,180.7116,476.9999" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[a830c80db557701ee44f5e3516aebbd0]
reverse link ZmqIpcImplIn to In--><path codeline="63" d="M355.1271,470 C355.1271,470 387.8683,470 387.8683,470 " fill="none" id="ZmqIpcImplIn-backto-In" style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="none" points="355.1271,476.9999,335.1271,470,355.1271,462.9999,355.1271,476.9999" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[eea7b88af0235b80d17fd4621ab666c4]
reverse link ZmqIpcImplOut to Out--><path codeline="64" d="M576.25,246.7236 C576.25,246.7236 576.25,298.8788 576.25,298.8788 " fill="none" id="ZmqIpcImplOut-backto-Out" style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="none" points="569.2501,246.7236,576.25,226.7236,583.2501,246.7236,569.2501,246.7236" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[ee3a59d6c02d08ce1886f7e86623d128]
reverse link In to InOut--><path codeline="65" d="M509.1318,470 C509.1318,470 531.1038,470 531.1038,470 " fill="none" id="In-backto-InOut" style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="#FFFFFF" points="496.1318,470,502.1318,474,508.1318,470,502.1318,466,496.1318,470" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[6fe55e28d136cda1c013dcfd216fe504]
reverse link Out to InOut--><path codeline="66" d="M577,386.3265 C577,386.3265 577,439.1999 577,439.1999 " fill="none" id="Out-backto-InOut" style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="#FFFFFF" points="577,373.3265,573,379.3265,577,385.3265,581,379.3265,577,373.3265" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[dc6b225c9cdaeaa9b5cce7a1cb51d85b]
@startuml
skinparam linetype ortho
class SysContext{
    -input_msg_queue_
    +STMWorker()
    +HandleSignal()
}
package "Communication Module" <<Folder>> {

class Session{
    +RecvInputMsg()
    +SendOutputSignal()
    +SendAck()
}

class OutputHandler{
    +SendOutputSignal()
}

class InputHandler{
    +RecvInputMsg()
}

class APPsProtocolHandler{
    +WrapSignalToMsg()
    +ExtractSignalFromMsg()
}

class IpcInterfaceOut{
    +DoSendJob()
}
class IpcInterfaceIn{
    +DoRecvJob()
}

class ZmqIpcImplOut{
    +DoSendJob()
}
class ZmqIpcImplIn{
    +DoBlockRecvJob()
}
package "AUTOSAR Interface"{
interface In{
    PowerModeMsg()
    TriggerIn()
}
interface Out{
    PowerModeRespMsg()
    TriggerOut()
}
interface InOut{
    TriggerInOut()
}
Session -up-* SysContext
OutputHandler -left-* Session
InputHandler -up-* Session
IpcInterfaceOut -left-* OutputHandler
ZmqIpcImplOut -left-|> IpcInterfaceOut
APPsProtocolHandler -up-o OutputHandler
APPsProtocolHandler -left-o InputHandler
IpcInterfaceIn -up-* InputHandler
ZmqIpcImplIn -left-|> IpcInterfaceIn

In .left.|> ZmqIpcImplIn
Out .up.|> ZmqIpcImplOut
InOut .left.o In
InOut .up.o Out


}
}
@enduml

PlantUML version 1.2021.12(Wed Oct 06 00:01:58 CST 2021)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg></p><p><!--?xml version="1.0" encoding="UTF-8" standalone="no"?--><svg xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" contentscripttype="application/ecmascript" contentstyletype="text/css" height="448px" preserveAspectRatio="none" style="width:570px;height:448px;background:#FFFFFF;" version="1.1" viewBox="0 0 570 448" width="570px" zoomAndPan="magnify"><defs><filter height="300%" id="f19igw4ikosv4v" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[30b624e98654eb3d21f29b03696f11b4]
cluster FunctionState--><rect fill="#FEFECE" filter="url(#f19igw4ikosv4v)" height="85" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="282" x="276" y="279"/><rect fill="#FFFFFF" height="52.7031" rx="12.5" ry="12.5" style="stroke:#FFFFFF;stroke-width:1.0;" width="276" x="279" y="308.2969"/><line style="stroke:#A80036;stroke-width:1.5;" x1="276" x2="558" y1="305.2969" y2="305.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="369" y="295.9951">FunctionState</text><!--MD5=[82787e748e7953238a704abe8eb50f0c]
cluster MachineState--><rect fill="#FEFECE" filter="url(#f19igw4ikosv4v)" height="305" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="250" x="7" y="59"/><rect fill="#FFFFFF" height="272.7031" rx="12.5" ry="12.5" style="stroke:#FFFFFF;stroke-width:1.0;" width="244" x="10" y="88.2969"/><line style="stroke:#A80036;stroke-width:1.5;" x1="7" x2="257" y1="85.2969" y2="85.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="85" y="75.9951">MachineState</text><g id="FunctionState.Calibration"><rect fill="#FEFECE" filter="url(#f19igw4ikosv4v)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="92" x="458" y="306"/><line style="stroke:#A80036;stroke-width:1.5;" x1="458" x2="550" y1="332.2969" y2="332.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="72" x="468" y="323.9951">Calibration</text></g><g id="FunctionState.Dota"><rect fill="#FEFECE" filter="url(#f19igw4ikosv4v)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="53" x="369.5" y="306"/><line style="stroke:#A80036;stroke-width:1.5;" x1="369.5" x2="422.5" y1="332.2969" y2="332.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="33" x="379.5" y="323.9951">Dota</text></g><g id="FunctionState.OTA"><rect fill="#FEFECE" filter="url(#f19igw4ikosv4v)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="50" x="284" y="306"/><line style="stroke:#A80036;stroke-width:1.5;" x1="284" x2="334" y1="332.2969" y2="332.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="29" x="294.5" y="323.9951">OTA</text></g><g id="MachineState.PowerModeOn"><rect fill="#FEFECE" filter="url(#f19igw4ikosv4v)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="122" x="127" y="86"/><line style="stroke:#A80036;stroke-width:1.5;" x1="127" x2="249" y1="112.2969" y2="112.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="102" x="137" y="103.9951">PowerModeOn</text></g><g id="MachineState.NormalDriving"><rect fill="#FEFECE" filter="url(#f19igw4ikosv4v)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="115" x="130.5" y="196"/><line style="stroke:#A80036;stroke-width:1.5;" x1="130.5" x2="245.5" y1="222.2969" y2="222.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="95" x="140.5" y="213.9951">NormalDriving</text></g><g id="MachineState.SysFault"><rect fill="#FEFECE" filter="url(#f19igw4ikosv4v)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="77" x="15.5" y="306"/><line style="stroke:#A80036;stroke-width:1.5;" x1="15.5" x2="92.5" y1="332.2969" y2="332.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="57" x="25.5" y="323.9951">SysFault</text></g><g id="MachineState.PowerModeOff"><rect fill="#FEFECE" filter="url(#f19igw4ikosv4v)" height="50" rx="12.5" ry="12.5" style="stroke:#A80036;stroke-width:1.5;" width="121" x="127.5" y="306"/><line style="stroke:#A80036;stroke-width:1.5;" x1="127.5" x2="248.5" y1="332.2969" y2="332.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="101" x="137.5" y="323.9951">PowerModeOff</text></g><ellipse cx="188" cy="16" fill="#000000" filter="url(#f19igw4ikosv4v)" rx="10" ry="10" style="stroke:none;stroke-width:1.0;"/><ellipse cx="188" cy="426" filter="url(#f19igw4ikosv4v)" rx="10" ry="10" style="stroke:#000000;stroke-width:1.0;fill:none;"/><ellipse cx="188.5" cy="426.5" fill="#000000" rx="6" ry="6" style="stroke:none;stroke-width:1.0;"/><!--MD5=[5aa1df08c06c76d087518db0de1ef938]
link *start to PowerModeOn--><path d="M188,26.1667 C188,26.1667 188,80.612 188,80.612 " fill="none" id="*start-to-PowerModeOn" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="188,85.612,192,76.612,188,80.612,184,76.612,188,85.612" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[694c9af0f0a6a62d39627d065fbcb65c]
link PowerModeOn to NormalDriving--><path d="M188,136.2362 C188,136.2362 188,190.8812 188,190.8812 " fill="none" id="PowerModeOn-to-NormalDriving" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="188,195.8812,192,186.8812,188,190.8812,184,186.8812,188,195.8812" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[03cb408f4dfa2421e4e2c72ad19a347f]
link NormalDriving to PowerModeOff--><path d="M188,246.2362 C188,246.2362 188,300.8812 188,300.8812 " fill="none" id="NormalDriving-to-PowerModeOff" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="188,305.8812,192,296.8812,188,300.8812,184,296.8812,188,305.8812" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[f70439486232c8c11d4caa09251ab895]
link NormalDriving to OTA--><path d="M245.665,238 C276.8298,238 309,238 309,238 C309,238 309,300.5873 309,300.5873 " fill="none" id="NormalDriving-to-OTA" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="309,305.5873,313,296.5873,309,300.5873,305,296.5873,309,305.5873" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[6c544dc92baa9ce05d831d200729b9e2]
link OTA to PowerModeOff--><path d="M283.9287,331 C283.9287,331 253.7313,331 253.7313,331 " fill="none" id="OTA-to-PowerModeOff" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="248.7313,331,257.7313,335,253.7313,331,257.7313,327,248.7313,331" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[e61e5542037e95c27275df199d332c4a]
link NormalDriving to Calibration--><path d="M245.6158,213 C332.9194,213 488.6667,213 488.6667,213 C488.6667,213 488.6667,300.9752 488.6667,300.9752 " fill="none" id="NormalDriving-to-Calibration" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="488.6667,305.9752,492.6667,296.9752,488.6667,300.9752,484.6667,296.9752,488.6667,305.9752" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[a1ca53bf3e8b0e0e087380677a86cf44]
link Calibration to NormalDriving--><path d="M519.3333,305.8049 C519.3333,269.0348 519.3333,205 519.3333,205 C519.3333,205 250.7139,205 250.7139,205 " fill="none" id="Calibration-to-NormalDriving" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="245.7139,205,254.7139,209,250.7139,205,254.7139,201,245.7139,205" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[f2de1764ffa6f90205d07e90d0e53215]
link NormalDriving to Dota--><path d="M245.6073,230 C304.4287,230 387.1667,230 387.1667,230 C387.1667,230 387.1667,300.774 387.1667,300.774 " fill="none" id="NormalDriving-to-Dota" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="387.1667,305.774,391.1667,296.774,387.1667,300.774,383.1667,296.774,387.1667,305.774" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[10c5de44ef6157011e03d5055f7d5f55]
link Dota to NormalDriving--><path d="M404.8333,305.7638 C404.8333,273.288 404.8333,221 404.8333,221 C404.8333,221 250.5381,221 250.5381,221 " fill="none" id="Dota-to-NormalDriving" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="245.5381,221,254.5381,225,250.5381,221,254.5381,217,245.5381,221" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[e3121b46b605bffef48f9fffdec9364e]
link PowerModeOff to *end--><path d="M188,356.4583 C188,356.4583 188,410.5388 188,410.5388 " fill="none" id="PowerModeOff-to-*end" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="188,415.5388,192,406.5388,188,410.5388,184,406.5388,188,415.5388" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[192539873378c04843de4ccd204e15b0]
link NormalDriving to SysFault--><path d="M130.389,213 C89.2528,213 41.1667,213 41.1667,213 C41.1667,213 41.1667,300.9752 41.1667,300.9752 " fill="none" id="NormalDriving-to-SysFault" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="41.1667,305.9752,45.1667,296.9752,41.1667,300.9752,37.1667,296.9752,41.1667,305.9752" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[9c6bfc4ce85e86d51c6545c743e10a24]
link SysFault to NormalDriving--><path d="M66.8333,305.774 C66.8333,275.8585 66.8333,230 66.8333,230 C66.8333,230 125.2556,230 125.2556,230 " fill="none" id="SysFault-to-NormalDriving" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="130.2556,230,121.2556,226,125.2556,230,121.2556,234,130.2556,230" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[c7f8cd8470368992fea072542e2faad7]
@startuml
skinparam linetype ortho
state FunctionState{
    state Calibration
    State Dota
    state OTA
}
State MachineState{
    State PowerModeOn
    State NormalDriving
    State SysFault
    State PowerModeOff
}
[*] - -> PowerModeOn
PowerModeOn - -> NormalDriving
NormalDriving - -> PowerModeOff
    NormalDriving  - ->  OTA
    OTA - -> PowerModeOff
    NormalDriving  - ->  Calibration
    Calibration - -> NormalDriving
    NormalDriving - -> Dota
    Dota - -> NormalDriving
PowerModeOff - -> [*]
NormalDriving - -> SysFault
SysFault - -> NormalDriving

@enduml

PlantUML version 1.2021.12(Wed Oct 06 00:01:58 CST 2021)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg></p>
      </div>
      
      
    
    
    
    
    
    
    
    
  
    </body></html>